﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Xml.Linq;
using System.Data.SqlClient;

namespace QA_System
{
    public class AnswerClass
    {
        private static string hienVatNull = "Xin lỗi, tôi không có thông tin về hiện vât. ";
        
        private static string noInfo = "Xin lỗi, tôi không biết.";

        private static string yes = "Đúng rồi.";
        private static string no = "Thông tin của bạn chưa chính xác.";

        private static string null1 = "Xin lỗi, hiện chưa có thông tin này.";
       
        private static string Answer_string = "";
        private static string sentence_string = "";       

        public static string AnswerString(string EAT, string[] KeyWord, sentence_tagger sentence)
        {
            sentence_string = "";
            Answer_string = "";
            int total_word = sentence.totalword();
            VMEDataSet.T_DantocDataTable danTocTable = new VMEDataSet.T_DantocDataTable();
            for (int i = 0; i < total_word; i++) sentence_string += sentence[i].Word_text + " ";

            switch (EAT)
            {                
                case "history":
                    VMEDataSet.T_HienVatDataTable hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = hienVatNull + KeyWord[0];
                    else
                    {
                        if (hienVatTable.Rows[0]["LichSuHienVat"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["LichSuHienVat"].ToString();
                        else Answer_string = noInfo;
                    }
                    break;
                case "description":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["MoTa"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["MoTa"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;                   
                case "usage":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["SuDung"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["SuDung"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "time":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["NgaySuuTam"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["NgaySuuTam"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "size":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["Dai"].ToString() != "") Answer_string += "Chiều dài : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Dai"].ToString()) + " ";
                        if (hienVatTable.Rows[0]["Rong"].ToString() != "") Answer_string += "Chiều rộng : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Rong"].ToString()) + " ";
                        if (hienVatTable.Rows[0]["Cao"].ToString() != "") Answer_string += "Chiều cao : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Cao"].ToString()) + " ";
                        if (hienVatTable.Rows[0]["DuongKinh"].ToString() != "") Answer_string += "Đường kính : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["DuongKinh"].ToString());
                        if (Answer_string.Trim() == "")
                            Answer_string = noInfo;
                    }
                    break;
                case "material":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Rows.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["ChatLieuID"].ToString() != "")
                        {
                            VMEDataSet.T_ChatLieuDataTable chatLieuTable = ChatLieu.GetChatLieuById(int.Parse(hienVatTable.Rows[0]["ChatLieuID"].ToString()));
                            Answer_string = "Chất liệu : " + chatLieuTable.Rows[0]["TenChatLieu"];
                        }
                        if (Answer_string.Trim() == "")
                            Answer_string = noInfo;
                    }
                    break;
                case "tribe":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Rows.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["DanTocCheTacID"].ToString() != "")
                        {
                            danTocTable = DanToc.GetDanTocById(int.Parse(hienVatTable.Rows[0]["DanTocCheTacID"].ToString()));
                            Answer_string += "Dân tộc chế tác : ";
                            Answer_string += danTocTable.Rows[0]["TenDanToc"];
                        }
                        if (Answer_string.Trim() == "")
                            Answer_string = noInfo;
                    }
                    break;
                case "producePlace":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["DiaDiemCheTac"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["DiaDiemCheTac"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "usePlace":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["DiaDiemSuDung"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["DiaDiemSuDung"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "tech":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["KyThuatCheTac"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["KyThuatCheTac"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "person":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["NguoiCheTac"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["NguoiCheTac"].ToString();
                        else
                            Answer_string = noInfo;
                    }
                    break;
                case "allInfo":
                     hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToLower());
                    if (hienVatTable.Rows.Count == 0) Answer_string = noInfo;
                    else
                    {
                        if (hienVatTable.Rows[0]["TenGoiPhoThong"].ToString() != "")
                        {
                            Answer_string += "Tên gọi phổ thông : ";
                            Answer_string += hienVatTable.Rows[0]["TenGoiPhoThong"].ToString() + ". ";                            
                        }
                        if (hienVatTable.Rows[0]["TenGoiTiengDanToc"].ToString() != "")
                        {
                            Answer_string += ". Tên gọi tiếng dân tộc : ";
                            Answer_string += hienVatTable.Rows[0]["TenGoiTiengDanToc"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["DanTocCheTacID"].ToString() != "")
                        {                            
                            danTocTable = DanToc.GetDanTocById(int.Parse(hienVatTable.Rows[0]["DanTocCheTacID"].ToString()));
                            Answer_string += ". Dân tộc chế tác : ";
                            Answer_string += danTocTable.Rows[0]["TenDanToc"] + ". ";
                        }
                        if (hienVatTable.Rows[0]["DanTocSuDungID"].ToString() != "")
                        {                            
                            danTocTable = DanToc.GetDanTocById(int.Parse(hienVatTable.Rows[0]["DanTocSuDungID"].ToString()));
                            Answer_string += ". Dân tộc sử dụng : ";
                            Answer_string += danTocTable.Rows[0]["TenDanToc"] + ". ";
                        }
                        if (hienVatTable.Rows[0]["DiaDiemCheTac"].ToString() != "")
                        {
                            Answer_string += "Địa điểm chế tác : ";
                            Answer_string += hienVatTable.Rows[0]["DiaDiemCheTac"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["DiaDiemSuDung"].ToString() != "")
                        {
                            Answer_string += "Địa điểm sử dụng : ";
                            Answer_string += hienVatTable.Rows[0]["DiaDiemSuDung"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["DiaDiemSuuTam"].ToString() != "")
                        {
                            Answer_string += "Địa điểm sưu tầm : ";
                            Answer_string += hienVatTable.Rows[0]["DiaDiemSuuTam"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["NguoiCheTac"].ToString() != "")
                        {
                            Answer_string += "Người chế tác : ";
                            Answer_string += hienVatTable.Rows[0]["NguoiCheTac"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["NguoiSuDung"].ToString() != "")
                        {
                            Answer_string += "Người sử dụng : ";
                            Answer_string += hienVatTable.Rows[0]["NguoiSuDung"].ToString() + ". ";
                        }
                        if (hienVatTable.Rows[0]["LichSuHienVat"].ToString() != "")
                        {
                            Answer_string += "Lịch sử hiện vật : ";
                            Answer_string += hienVatTable.Rows[0]["LichSuHienVat"].ToString() + ". ";
                            //Answer_string += ;
                        }
                        Answer_string += "Kích thước :";
                        if (hienVatTable.Rows[0]["Dai"].ToString() != "") Answer_string += "Chiều dài : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Dai"].ToString()) + ". ";
                        if (hienVatTable.Rows[0]["Rong"].ToString() != "") Answer_string += "Chiều rộng : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Rong"].ToString()) + ". ";
                        if (hienVatTable.Rows[0]["Cao"].ToString() != "") Answer_string += "Chiều cao : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["Cao"].ToString()) + ". ";
                        if (hienVatTable.Rows[0]["DuongKinh"].ToString() != "") Answer_string += "Đường kính : " + StringNumber.ConvertToSound(hienVatTable.Rows[0]["DuongKinh"].ToString());
                        
                        if (hienVatTable.Rows[0]["TrongLuong"].ToString() != "")
                        {
                            Answer_string += "Trọng lượng : ";
                            Answer_string += hienVatTable.Rows[0]["TrongLuong"].ToString() + ". ";                            
                        }
                        if (hienVatTable.Rows[0]["ChatLieuID"].ToString() != "")
                        {
                            VMEDataSet.T_ChatLieuDataTable chatLieuTable = ChatLieu.GetChatLieuById(int.Parse(hienVatTable.Rows[0]["ChatLieuID"].ToString()));
                            Answer_string += "Chất liệu : " ;
                            Answer_string += chatLieuTable.Rows[0]["TenChatLieu"] + ". ";
                        }
                        if (Answer_string.Trim() == "")
                            Answer_string = noInfo;
               
                    }
                    break;
            }

            //sentence_string += " @@ " + Answer_string;
            //return sentence_string;
            
            return Answer_string.Trim();
        }

    }
}